#include "My_INC/LC/LC_ADC.h"

 uint16_t ADC1_result[ADC1_SIZE];
 uint16_t ADC2_result[ADC2_SIZE];
 uint16_t ADC3_result[ADC3_SIZE];
 uint16_t ADC4_result[ADC4_SIZE];
 uint16_t ADC5_result[ADC5_SIZE];
void ADC_result_Init(void)
{
    for (uint8_t i = 0; i < ADC1_SIZE; i++)
        ADC1_result[i] = 0;
    for (uint8_t i = 0; i < ADC2_SIZE; i++)
        ADC2_result[i] = 0;
    for (uint8_t i = 0; i < ADC3_SIZE; i++)
        ADC3_result[i] = 0;
    for (uint8_t i = 0; i < ADC4_SIZE; i++)
        ADC4_result[i] = 0;
    for (uint8_t i = 0; i < ADC5_SIZE; i++)
        ADC5_result[i] = 0;
}
void ADC_Init(void)
{
    // DMA和ADC的初始化
	 // DMA和ADC的初始化
	    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_1, ADC1_SIZE); // 设置DMA1通道1的数据长�???????????????,是数组的数据个数
	    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_2, ADC2_SIZE); // 设置DMA1通道2的数据长�???????????????,是数组的数据个数
	    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, ADC3_SIZE); // 设置DMA1通道3的数据长�???????????????,是数组的数据个数
	    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_4, ADC4_SIZE); // 设置DMA1通道4的数据长�???????????????,是数组的数据个数
	    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_5, ADC5_SIZE); // 设置DMA1通道4的数据长�???????????????,是数组的数据个数



	    LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_1,
	                            LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA)); // 获取DMA目的外设地址
	    LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_2,
	                            LL_ADC_DMA_GetRegAddr(ADC2, LL_ADC_DMA_REG_REGULAR_DATA)); // 获取DMA目的外设地址
	    LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_3,
	                            LL_ADC_DMA_GetRegAddr(ADC3, LL_ADC_DMA_REG_REGULAR_DATA)); // 获取DMA目的外设地址
	    LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_4,
	                            LL_ADC_DMA_GetRegAddr(ADC4, LL_ADC_DMA_REG_REGULAR_DATA)); // 获取DMA目的外设地址
	    LL_DMA_SetPeriphAddress(DMA1, LL_DMA_CHANNEL_5,
	                            LL_ADC_DMA_GetRegAddr(ADC5, LL_ADC_DMA_REG_REGULAR_DATA)); // 获取DMA目的外设地址


	    LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_1, (uint32_t)ADC1_result); // 获取DMA目的内存地址
	    LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_2, (uint32_t)ADC2_result); // 获取DMA目的内存地址
	    LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_3, (uint32_t)ADC3_result); // 获取DMA目的内存地址
	    LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_4, (uint32_t)ADC4_result); // 获取DMA目的内存地址
	    LL_DMA_SetMemoryAddress(DMA1, LL_DMA_CHANNEL_5, (uint32_t)ADC5_result); // 获取DMA目的内存地址


	    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_1); // 使能DMA通道
	    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_2); // 使能DMA通道
	    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_3); // 使能DMA通道
	    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_4); // 使能DMA通道
	    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_5); // 使能DMA通道

	    LL_ADC_EnableInternalRegulator(ADC1); // 使能ADC内部稳压�???????????????
	    LL_ADC_EnableInternalRegulator(ADC2); // 使能ADC内部稳压�???????????????
	    LL_ADC_EnableInternalRegulator(ADC3); // 使能ADC内部稳压�???????????????
	    LL_ADC_EnableInternalRegulator(ADC4); // 使能ADC内部稳压�???????????????
	    LL_ADC_EnableInternalRegulator(ADC5); // 使能ADC内部稳压�???????????????


	    LL_mDelay(1);                                       // 延迟1ms
	    LL_ADC_StartCalibration(ADC1, LL_ADC_SINGLE_ENDED); // 校准ADC1
	    LL_ADC_StartCalibration(ADC2, LL_ADC_SINGLE_ENDED); // 校准ADC2
	    LL_ADC_StartCalibration(ADC3, LL_ADC_SINGLE_ENDED); // 校准ADC3
	    LL_ADC_StartCalibration(ADC4, LL_ADC_SINGLE_ENDED); // 校准ADC4
	    LL_ADC_StartCalibration(ADC5, LL_ADC_SINGLE_ENDED); // 校准ADC4

	    LL_mDelay(1);        // 延迟1ms
	    LL_ADC_Enable(ADC1); // 使能ADC1
	    LL_ADC_Enable(ADC2); // 使能ADC2
	    LL_ADC_Enable(ADC3); // 使能ADC3
	    LL_ADC_Enable(ADC4); // 使能ADC4
	    LL_ADC_Enable(ADC5); // 使能ADC4

	    LL_mDelay(1);                                                       // 延迟1ms
	    LL_ADC_REG_SetDMATransfer(ADC1, LL_ADC_REG_DMA_TRANSFER_UNLIMITED); // 设置ADC1的DMA请求为无限模式，配合DMA循环使用
	    LL_ADC_REG_SetDMATransfer(ADC2, LL_ADC_REG_DMA_TRANSFER_UNLIMITED); // 设置ADC2的DMA请求为无限模式，配合DMA循环使用
	    LL_ADC_REG_SetDMATransfer(ADC3, LL_ADC_REG_DMA_TRANSFER_UNLIMITED); // 设置ADC3的DMA请求为无限模式，配合DMA循环使用
	    LL_ADC_REG_SetDMATransfer(ADC4, LL_ADC_REG_DMA_TRANSFER_UNLIMITED); // 设置ADC4的DMA请求为无限模式，配合DMA循环使用
	    LL_ADC_REG_SetDMATransfer(ADC5, LL_ADC_REG_DMA_TRANSFER_UNLIMITED); // 设置ADC4的DMA请求为无限模式，配合DMA循环使用

	    LL_ADC_REG_StartConversion(ADC1); // 设置ADC1�???????????????始转�???????????????
	    LL_ADC_REG_StartConversion(ADC2); // 设置ADC1�???????????????始转�???????????????
	    LL_ADC_REG_StartConversion(ADC3); // 设置ADC1�???????????????始转�???????????????
	    LL_ADC_REG_StartConversion(ADC4); // 设置ADC1�???????????????始转�???????????????
	    LL_ADC_REG_StartConversion(ADC5); // 设置ADC1�???????????????始转�???????????????

}
void DAC_Init(void)
{
    //比较器保护阈值设置
    LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_1);//打开DAC
    LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, (uint32_t)(2048)); //设置比较阈值

    LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_2);//打开DAC
    LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_2, (uint32_t)(2048)); //设置比较阈值
}
